

class adder:
     def __init__(self, value=0):
         self.data = value                  # initialize data
     def __add__(self, other):
         self.data += other                 # add other in-place

class addrepr(adder):                       # inherit __init__, __add__
     def __repr__(self):                    # add string representation
         return 'addrepr(%s)' % self.data   # convert to string as code

x = addrepr(2)                              # runs __init__
x + 1                                       # runs __add__
print x                                     # runs __repr__
addrepr(3)
print x                                     # runs __repr__
addrepr(3) 
print str(x), repr(x)                       # run ___repr__

           